home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / sort.arc / SSORT.C < prev   
Encoding:
Text File  |  1984-12-26  |  1.1 KB  |  40 lines

  1. /* ssort - shell sort (see Knuth p. 85
  2.    ssort(n,comp,swap)
  3. unsigned n;
  4. int (*comp)();
  5. int (*swap)();
  6.             see bsort for full description of parms
  7. */
  8. #define void int
  9.  
  10. void ssort(n,comp,swap)
  11. unsigned n;
  12. int (*comp)();
  13. int (*swap)();
  14. {
  15.     int m;
  16.     int h,i,j,k;
  17.  
  18.     m=n;
  19.  
  20.     while(m /= 2) {
  21.         k = n - m;
  22.         j = 1;
  23.         do {
  24.             i = j;
  25.             do {
  26.                 h = i + m;
  27.                 if((*comp)(i-1,h=1) > 0) {
  28.                     (*swap)(i - 1, h - 1);
  29.                     i -= m;
  30.                  }else
  31.                     break;
  32.             } while(i>= 1);
  33.         j+=1;
  34.         } while(j <= k);
  35.     }
  36. }
  37. hile(j <= k);
  38.     }
  39. }
  40.